home *** CD-ROM | disk | FTP | other *** search
- /* StormC
- FBackNGUI
- ©1999 Visionary Software - All rights reserved
- Program by Chris De Maeyer
- */
-
- #include <stdio.h>
- #include <string.h>
-
- #include <dos/dos.h>
- #include <dos/dostags.h>
- #include <clib/alib_protos.h>
- #include <pragma/exec_lib.h>
- #include <pragma/dos_lib.h>
- #include <pragma/intuition_lib.h>
- #include <pragma/utility_lib.h>
- #include <pragma/asl_lib.h>
- #include <pragma/wizard_lib.h>
- #include <libraries/wizard.h>
- #include <intuition/gadgetclass.h>
- #include <intuition/intuition.h>
-
- #include "fbackngui.h"
- #include "options.h"
- #include "config.h"
-
- char version[]="$VER: FBackNGUI V1.1 ";
- APTR surface;
- struct Screen *screen;
- struct NewWindow *newwin,*infowin;
- struct Window *window,*infowindow;
- struct WizardWindowHandle *winhandle,*infohandle;
- struct Gadget *gads[MAIN_WIN_GADGETS];
- struct Gadget *iads[INFO_WIN_GADGETS];
-
- struct FileRequester *filereq;
- OPTS opt;
- char file[STR_LONG];
- char *autocon="CON:0/40/640/150/FBackNG-Shell/auto/close";
- char *temp = NULL;
-
- #ifndef __STORM__
- struct Library *AslBase;
- struct Library *IntuitionBase;
- struct Library *WizardBase;
-
- int init_libraries( void);
- void exit_libraries( void);
- #endif
-
- LONG beginCommand(char *command)
- {
- struct TagItem stags[5];
- BPTR file;
-
- if(file= Open(autocon,MODE_OLDFILE))
- {
- stags[0].ti_Tag=SYS_Input;
- stags[0].ti_Data=file;
-
- stags[1].ti_Tag=SYS_Output;
- stags[1].ti_Data=NULL;
-
- stags[2].ti_Tag=SYS_Asynch;
- stags[2].ti_Data=FALSE;
-
- stags[3].ti_Tag=SYS_UserShell;
- stags[3].ti_Data=TRUE;
-
- stags[4].ti_Tag=TAG_DONE;
- return(System(command, stags));
- }
- else
- return(-2);
- }
-
- BOOL CheckMyDate(char *date)
- {
- struct DateTime dt;
-
- dt.dat_Format = FORMAT_DOS;
- dt.dat_StrDate = date;
- dt.dat_StrTime = NULL;
- dt.dat_Flags = 0L;
- dt.dat_StrDay = NULL;
-
- if(!(StrToDate(&dt)))
- return(FALSE);
- return(TRUE);
- }
-
- void GetValues(void)
- {
- ULONG *itemp = NULL;
-
- // CheckBoxes already toggled by main
-
- GetAttr(WSTRINGA_String, gads[STR_SOURCE], (ULONG *)&temp);
- strncpy(opt.source, temp, STR_LONG);
- GetAttr(WSTRINGA_String, gads[STR_DEST], (ULONG *)&temp);
- strncpy(opt.dest, temp, STR_LONG);
- GetAttr(WSTRINGA_String, gads[STR_LOG], (ULONG *)&temp);
- strncpy(opt.log, temp, STR_LONG);
- GetAttr(WSTRINGA_String, gads[STR_TO], (ULONG *)&temp);
- strncpy(opt.to, temp, STR_SHORT);
- GetAttr(WSTRINGA_String, gads[STR_FROM], (ULONG *)&temp);
- strncpy(opt.from, temp, STR_SHORT);
- GetAttr(WSTRINGA_String, gads[STR_PACKER], (ULONG *)&temp);
- strncpy(opt.packer, temp, STR_SHORT);
- GetAttr(WSTRINGA_String, gads[STR_PATTERN], (ULONG *)&temp);
- strncpy(opt.pattern, temp, STR_SHORT);
-
- GetAttr(WCHECKBOXA_Checked, gads[CHK_BACKUP], itemp);
- opt.backup=(BOOL)*itemp;
- GetAttr(WCHECKBOXA_Checked, gads[CHK_MIRROR], itemp);
- opt.mirror=(BOOL)*itemp;
- GetAttr(WCHECKBOXA_Checked, gads[CHK_DELETE], itemp);
- opt.delete=(BOOL)*itemp;
- GetAttr(WCHECKBOXA_Checked, gads[CHK_RECURS], itemp);
- opt.recursive=(BOOL)*itemp;
- GetAttr(WCHECKBOXA_Checked, gads[CHK_TOUCH], itemp);
- opt.touch=(BOOL)*itemp;
- GetAttr(WCHECKBOXA_Checked, gads[CHK_NOTES], itemp);
- opt.notes=(BOOL)*itemp;
- GetAttr(WCHECKBOXA_Checked, gads[CHK_SIMUL], itemp);
- opt.simulate=(BOOL)*itemp;
- GetAttr(WCHECKBOXA_Checked, gads[CHK_EVERY], itemp);
- opt.every=(BOOL)*itemp;
- GetAttr(WCHECKBOXA_Checked, gads[CHK_NARCHIV], itemp);
- opt.narchiv=(BOOL)*itemp;
-
- GetAttr(WCYCLEA_Active,gads[CYC_VERBOSE], itemp);
- opt.verbosity=(int)*itemp;
-
- GetAttr(WSLIDERA_Level,gads[HSL_PRI], itemp);
- opt.priority=(int)*itemp;
-
- }
-
- void SavePrefs(char *file)
- {
- long result;
-
- result = WriteConfig(file,"FBackNGui", "SourcePath", opt.source);
- result = WriteConfig(file,"FBackNGui", "DestPath", opt.dest);
- result = WriteConfig(file,"FBackNGui", "LogFile", opt.log);
- result = WriteConfig(file,"FBackNGui", "Packer", opt.packer);
- result = WriteConfig(file,"FBackNGui", "FromDate", opt.from);
- result = WriteConfig(file,"FBackNGui", "ToDate", opt.to);
- result = WriteConfig(file,"FBackNGui", "Pattern", opt.pattern);
-
- result = WriteConfigNumber(file,"FBackNGui", "Backup", opt.backup);
- result = WriteConfigNumber(file,"FBackNGui", "Mirror", opt.mirror);
- result = WriteConfigNumber(file,"FBackNGui", "Delete", opt.delete);
- result = WriteConfigNumber(file,"FBackNGui", "Recursive", opt.recursive);
- result = WriteConfigNumber(file,"FBackNGui", "Every", opt.every);
- result = WriteConfigNumber(file,"FBackNGui", "Touch", opt.touch);
- result = WriteConfigNumber(file,"FBackNGui", "NoNotes", opt.notes);
- result = WriteConfigNumber(file,"FBackNGui", "Simulate", opt.simulate);
- result = WriteConfigNumber(file,"FBackNGui", "Priority", opt.priority);
- result = WriteConfigNumber(file,"FBackNGui", "Verbosity", opt.verbosity);
- result = WriteConfigNumber(file,"FBackNGui", "NoArchiv", opt.narchiv);
- }
-
- void LoadPrefs(char *file)
- {
- long result;
-
- result = ReadConfig(file,"FBackNGui", "SourcePath", (char *)opt.source, STR_LONG, "");
- result = ReadConfig(file,"FBackNGui", "DestPath", (char *)opt.dest, STR_LONG, "");
- result = ReadConfig(file,"FBackNGui", "LogFile", (char *)opt.log, STR_LONG, "");
- result = ReadConfig(file,"FBackNGui", "Packer", (char *)opt.packer, STR_SHORT, "");
- result = ReadConfig(file,"FBackNGui", "FromDate", (char *)opt.from, STR_SHORT, "");
- result = ReadConfig(file,"FBackNGui", "ToDate", (char *)opt.to, STR_SHORT, "");
- result = ReadConfig(file,"FBackNGui", "Pattern", (char *)opt.pattern, STR_SHORT, "");
-
- result = ReadConfigNumber(file,"FBackNGui", "Backup", 0);
- opt.backup = result;
- result = ReadConfigNumber(file,"FBackNGui", "Mirror", 0);
- opt.mirror = result;
- result = ReadConfigNumber(file,"FBackNGui", "Mirror", 0);
- opt.mirror = result;
- result = ReadConfigNumber(file,"FBackNGui", "Delete", 0);
- opt.delete = result;
- result = ReadConfigNumber(file,"FBackNGui", "Recursive", 0);
- opt.recursive = result;
- result = ReadConfigNumber(file,"FBackNGui", "Every", 0);
- opt.every = result;
- result = ReadConfigNumber(file,"FBackNGui", "Touch", 0);
- opt.touch = result;
- result = ReadConfigNumber(file,"FBackNGui", "NoNotes", 0);
- opt.notes = result;
- result = ReadConfigNumber(file,"FBackNGui", "Simulate", 0);
- opt.simulate = result;
- result = ReadConfigNumber(file,"FBackNGui", "Priority", 0);
- opt.priority = result;
- result = ReadConfigNumber(file,"FBackNGui", "Verbosity", 0);
- opt.verbosity = result;
- result = ReadConfigNumber(file,"FBackNGui", "NoArchiv", 0);
- opt.narchiv = result;
- }
-
- // set gadgets to loaded values
- void SetGads(void)
- {
- SetGadgetAttrs(gads[STR_SOURCE],window,0L,WSTRINGA_String, opt.source,TAG_DONE);
- SetGadgetAttrs(gads[STR_DEST],window,0L,WSTRINGA_String, opt.dest,TAG_DONE);
- SetGadgetAttrs(gads[STR_LOG],window,0L,WSTRINGA_String, opt.log, TAG_DONE);
- SetGadgetAttrs(gads[STR_TO],window,0L,WSTRINGA_String, opt.to,TAG_DONE);
- SetGadgetAttrs(gads[STR_FROM],window,0L,WSTRINGA_String, opt.from,TAG_DONE);
- SetGadgetAttrs(gads[STR_PACKER],window,0L,WSTRINGA_String, opt.packer,TAG_DONE);
- SetGadgetAttrs(gads[STR_PATTERN],window,0L,WSTRINGA_String, opt.pattern,TAG_DONE);
- SetGadgetAttrs(gads[HSL_PRI],window,0L,WSLIDERA_Level,opt.priority,TAG_DONE);
- SetGadgetAttrs(gads[CYC_VERBOSE],window,0L,WCYCLEA_Active,opt.verbosity,TAG_DONE);
- SetGadgetAttrs(gads[CHK_BACKUP],window,0L,WCHECKBOXA_Checked,opt.backup,TAG_DONE);
- SetGadgetAttrs(gads[CHK_MIRROR],window,0L,WCHECKBOXA_Checked,opt.mirror,TAG_DONE);
- SetGadgetAttrs(gads[CHK_DELETE],window,0L,WCHECKBOXA_Checked,opt.delete,TAG_DONE);
- SetGadgetAttrs(gads[CHK_RECURS],window,0L,WCHECKBOXA_Checked,opt.recursive,TAG_DONE);
- SetGadgetAttrs(gads[CHK_TOUCH],window,0L,WCHECKBOXA_Checked,opt.touch,TAG_DONE);
- SetGadgetAttrs(gads[CHK_NOTES],window,0L,WCHECKBOXA_Checked,opt.notes,TAG_DONE);
- SetGadgetAttrs(gads[CHK_SIMUL],window,0L,WCHECKBOXA_Checked,opt.simulate,TAG_DONE);
- SetGadgetAttrs(gads[CHK_EVERY],window,0L,WCHECKBOXA_Checked,opt.every,TAG_DONE);
- SetGadgetAttrs(gads[CHK_NARCHIV],window,0L,WCHECKBOXA_Checked,opt.narchiv,TAG_DONE);
-
- }
-
- // set gadgets to loaded values
- void ClearGads(void)
- {
- SetGadgetAttrs(gads[STR_SOURCE],window,0L,WSTRINGA_String, "",TAG_DONE);
- SetGadgetAttrs(gads[STR_DEST],window,0L,WSTRINGA_String, "",TAG_DONE);
- SetGadgetAttrs(gads[STR_LOG],window,0L,WSTRINGA_String, "", TAG_DONE);
- SetGadgetAttrs(gads[STR_TO],window,0L,WSTRINGA_String, "",TAG_DONE);
- SetGadgetAttrs(gads[STR_FROM],window,0L,WSTRINGA_String, "",TAG_DONE);
- SetGadgetAttrs(gads[STR_PACKER],window,0L,WSTRINGA_String, "",TAG_DONE);
- SetGadgetAttrs(gads[STR_PATTERN],window,0L,WSTRINGA_String, "",TAG_DONE);
- SetGadgetAttrs(gads[HSL_PRI],window,0L,WSLIDERA_Level,0,TAG_DONE);
- SetGadgetAttrs(gads[CYC_VERBOSE],window,0L,WCYCLEA_Active,1,TAG_DONE);
- SetGadgetAttrs(gads[CHK_BACKUP],window,0L,WCHECKBOXA_Checked,0,TAG_DONE);
- SetGadgetAttrs(gads[CHK_MIRROR],window,0L,WCHECKBOXA_Checked,0,TAG_DONE);
- SetGadgetAttrs(gads[CHK_DELETE],window,0L,WCHECKBOXA_Checked,0,TAG_DONE);
- SetGadgetAttrs(gads[CHK_RECURS],window,0L,WCHECKBOXA_Checked,0,TAG_DONE);
- SetGadgetAttrs(gads[CHK_TOUCH],window,0L,WCHECKBOXA_Checked,0,TAG_DONE);
- SetGadgetAttrs(gads[CHK_NOTES],window,0L,WCHECKBOXA_Checked,0,TAG_DONE);
- SetGadgetAttrs(gads[CHK_SIMUL],window,0L,WCHECKBOXA_Checked,0,TAG_DONE);
- SetGadgetAttrs(gads[CHK_EVERY],window,0L,WCHECKBOXA_Checked,0,TAG_DONE);
- SetGadgetAttrs(gads[CHK_NARCHIV],window,0L,WCHECKBOXA_Checked,0,TAG_DONE);
-
- }
-
- // check if there is a default prefsfile and load
- void Check_Default(void)
- {
- BPTR lock=NULL;
-
- if((lock=Lock(DEF_PREFS,ACCESS_READ)))
- {
- UnLock(lock);
- LoadPrefs(DEF_PREFS);
- SetGads();
- }
- }
-
- void RunFBackNG(void)
- {
- char cmdstr[STR_LONG];
- //char temp[12];
-
- strcpy(cmdstr,"c:FBackNG ");
-
- if(opt.source)
- {
- strcat(cmdstr,"-b ");
- strcat(cmdstr,opt.source);
- }
- if(opt.dest)
- {
- strcat(cmdstr," -o ");
- strcat(cmdstr,opt.dest);
- }
- if(!opt.backup)
- {
- strcat(cmdstr," -k");
- }
- if(opt.mirror)
- {
- strcat(cmdstr," -m");
- }
- if(opt.delete)
- {
- strcat(cmdstr," -d");
- }
- if(opt.recursive)
- {
- strcat(cmdstr," -r");
- }
- if(opt.simulate)
- {
- strcat(cmdstr," -s");
- }
- if(opt.touch)
- {
- strcat(cmdstr," -t");
- }
- if(opt.every)
- {
- strcat(cmdstr," -e");
- }
- if(opt.notes)
- {
- strcat(cmdstr," -n");
- }
- if(opt.narchiv)
- {
- strcat(cmdstr," -u");
- }
-
- if(opt.priority>0)
- {
- strcat(cmdstr," -i");
- sprintf(cmdstr,"%s %ld",cmdstr,opt.priority);
- }
- if(opt.verbosity>0)
- {
- strcat(cmdstr," -v");
- sprintf(cmdstr,"%s %ld",cmdstr,opt.verbosity);
- }
- if(opt.packer[0]!='\0')
- {
- strcat(cmdstr," -c");
- sprintf(cmdstr,"%s %s",cmdstr,opt.packer);
- }
- if(opt.from[0]!='\0')
- {
- strcat(cmdstr," -a");
- sprintf(cmdstr,"%s %s",cmdstr,opt.from);
- }
- if(opt.to[0]!='\0')
- {
- strcat(cmdstr," -y");
- sprintf(cmdstr,"%s %s",cmdstr,opt.to);
- }
- if(opt.log[0]!='\0')
- {
- strcat(cmdstr," -l");
- sprintf(cmdstr,"%s %s",cmdstr,opt.log);
- }
- if(opt.pattern[0]!='\0')
- {
- strcat(cmdstr," -g");
- sprintf(cmdstr,"%s %s",cmdstr,opt.pattern);
- }
-
-
- beginCommand(cmdstr);
- //printf("%s\n",cmdstr);
- }
-
- void info( void)
- {
- BOOL Flag;
- struct IntuiMessage *msg;
-
- if ((infohandle=WZ_AllocWindowHandle(screen,0L,surface,TAG_DONE)))
- {
-
- if ((infowin=WZ_CreateWindowObj(infohandle,INFO_WIN,WWH_GadgetArray,iads,
- WWH_GadgetArraySize,sizeof(iads),
- TAG_DONE)))
- {
-
- if ((infowindow=WZ_OpenWindow(infohandle,infowin,WA_AutoAdjust,TRUE,TAG_DONE)))
- {
- Flag=TRUE;
-
- do
- {
- WaitPort(infowindow->UserPort);
- if ((msg=(struct IntuiMessage *)GetMsg(infowindow->UserPort)))
- {
- switch(msg->Class)
- {
- case IDCMP_CLOSEWINDOW:
- {
- Flag=FALSE;
- }
- break;
- }
- ReplyMsg((struct Message *)msg);
- }
- }
- while (Flag);
- WZ_CloseWindow(infohandle);
- }
- WZ_FreeWindowHandle(infohandle);
- }
- }
- }
-
- void main( void)
- {
- BOOL Flag;
- int gid;
- struct IntuiMessage *msg;
-
- #ifndef __STORM__
- if(! init_libraries( ))
- return;
- #endif
-
-
- if ((surface=WZ_OpenSurface("fbackngui.wizard",0L,TAG_DONE)))
- {
-
- if ((screen=LockPubScreen( 0L)))
- {
-
- if ((winhandle=WZ_AllocWindowHandle(screen,0L,surface,TAG_DONE)))
- {
-
- if ((newwin=WZ_CreateWindowObj(winhandle,MAIN_WIN,WWH_GadgetArray,gads,
- WWH_GadgetArraySize,sizeof(gads),TAG_DONE)))
- {
-
- if ((window=WZ_OpenWindow(winhandle,newwin,WA_AutoAdjust,TRUE,TAG_DONE)))
- {
- Flag=TRUE;
-
- HelpControl(window,HC_GADGETHELP);
-
- Check_Default();
-
- do
- {
- WaitPort(window->UserPort);
-
- if ((msg=(struct IntuiMessage *)GetMsg(window->UserPort)))
- {
-
-
- switch(msg->Class)
- {
- case IDCMP_CLOSEWINDOW:
- {
- Flag=FALSE;
- }
- break;
-
- case IDCMP_GADGETHELP:
- {
- if(msg->IAddress)
- {
- SetWindowTitles(window, WZ_GadgetHelp(winhandle, msg->IAddress), (STRPTR)-1L);
- }
- else
- SetWindowTitles(window, "FBackNGui", (STRPTR)-1L);
- }
- break;
-
- case IDCMP_IDCMPUPDATE:
- {
-
- gid = GetTagData(GA_ID,0,(struct TagItem *)msg->IAddress);
- switch(gid)
- {
- case STR_TO:
- GetAttr(WSTRINGA_String, gads[STR_TO], (ULONG *)&temp);
- strncpy(opt.to, temp, STR_SHORT);
- if(!(CheckMyDate(opt.to)))
- {
- SetGadgetAttrs(gads[STR_TO],window,0L,WSTRINGA_String,"",TAG_DONE);
- DisplayBeep(screen);
- }
- break;
-
- case STR_FROM:
- GetAttr(WSTRINGA_String, gads[STR_FROM], (ULONG *)&temp);
- strncpy(opt.from, temp, STR_SHORT);
- if(!(CheckMyDate(opt.from)))
- {
- SetGadgetAttrs(gads[STR_FROM],window,0L,WSTRINGA_String,"",TAG_DONE);
- DisplayBeep(screen);
- }
- break;
-
- case VBU_DEST:
- case VBU_SOURCE:
- if((filereq=AllocAslRequestTags(ASL_FileRequest,
- ASLFR_Screen, screen,
- ASLFR_DrawersOnly, TRUE,
- TAG_DONE)))
- {
- WZ_LockWindow(winhandle);
- if(AslRequest(filereq,TAG_DONE))
- {
- if(gid == VBU_SOURCE)
- SetGadgetAttrs(gads[STR_SOURCE],window,0L,WSTRINGA_String,(STRPTR)filereq->rf_Dir,TAG_DONE);
- else
- SetGadgetAttrs(gads[STR_DEST],window,0L,WSTRINGA_String,(STRPTR)filereq->rf_Dir,TAG_DONE);
-
- }
- WZ_UnlockWindow(winhandle);
-
- FreeAslRequest(filereq);
- }
- break;
-
- case VBU_LOG:
- if((filereq=AllocAslRequestTags(ASL_FileRequest,
- ASLFR_Screen, screen,
- TAG_DONE)))
- {
- WZ_LockWindow(winhandle);
- if(AslRequest(filereq,TAG_DONE))
- {
- strcpy(opt.log,(STRPTR)filereq->rf_Dir);
- AddPart(opt.log,(STRPTR)filereq->rf_File,STR_LONG);
- SetGadgetAttrs(gads[STR_LOG],window,0L,WSTRINGA_String,opt.log,TAG_DONE);
- }
- WZ_UnlockWindow(winhandle);
-
- FreeAslRequest(filereq);
- }
- break;
-
- case BUT_INFO:
- WZ_LockWindow(winhandle);
- info();
- WZ_UnlockWindow(winhandle);
- break;
-
- case BUT_LOAD:
- if((filereq=AllocAslRequestTags(ASL_FileRequest,
- ASLFR_Screen, screen,
- TAG_DONE)))
- {
- WZ_LockWindow(winhandle);
- if(AslRequest(filereq,TAG_DONE))
- {
- strcpy(file,(STRPTR)filereq->rf_File);
- }
- WZ_UnlockWindow(winhandle);
-
- FreeAslRequest(filereq);
- }
- LoadPrefs(file);
- SetGads();
- break;
-
- case BUT_SAVE:
- GetValues();
- if((filereq=AllocAslRequestTags(ASL_FileRequest,
- ASLFR_Screen, screen,
- TAG_DONE)))
- {
- WZ_LockWindow(winhandle);
- if(AslRequest(filereq,TAG_DONE))
- {
- strcpy(file,(STRPTR)filereq->rf_File);
- }
- WZ_UnlockWindow(winhandle);
-
- FreeAslRequest(filereq);
- }
-
- SavePrefs(file);
- break;
-
- case BUT_RUN:
- WZ_LockWindow(winhandle);
- GetValues();
- RunFBackNG();
- WZ_UnlockWindow(winhandle);
- break;
-
- case BUT_CLEAR:
- ClearGads();
- break;
-
- case BUT_EXIT:
- {
- Flag=FALSE;
- }
- break;
-
- default:
- break;
- }
- }
- }
-
- ReplyMsg((struct Message *)msg);
- }
- }
- while (Flag);
-
-
- WZ_CloseWindow(winhandle);
- }
- }
-
-
-
- WZ_FreeWindowHandle(winhandle);
- }
-
-
- UnlockPubScreen(0L,screen);
- }
-
-
- WZ_CloseSurface(surface);
- }
- #ifndef __STORM__
- exit_libraries();
- #endif
- }
-
- #ifndef __STORM__
- int init_libraries( void)
- {
-
- if(! (IntuitionBase = (struct Library *)OpenLibrary("intuition.library",37L)))
- return 0;
-
- if(! (WizardBase = (struct Library *)OpenLibrary("wizard.library",37L)))
- return 0;
-
- return 1;
- }
-
- void exit_libraries( void)
- {
-
- CloseLibrary((struct Library *) WizardBase);
- CloseLibrary((struct Library *) IntuitionBase);
- }
- #endif
-